2013年09月30日
川俣晶の縁側ソフトウェア技術雑記 total 5314 count

Win8.1にて、シンプルなXAMLだけでストアアプリのレイアウトをどこまで制御できるか

Written By: 川俣 晶連絡先

「手間を書けると時間も掛かるし金も掛かる。各種画面モードにXAMLだけでどこまで対応できるかやってみよう」

「なんでXAMLにそれだけこだわるんだよ」

「だって、デザインの奴隷じゃなくて、本質的なC#のコード書きたいじゃないか」

p1

p3

p4

p5

p2

XAMLのコード §

        <Grid Grid.Row="1" Margin="120,0,0,0">

            <TextBlock FontSize="40">Some Additional Text</TextBlock>

            <TextBox Margin="0,50,0,80" x:Name="MyTextBox" Loaded="MyTextBox_Loaded" TextWrapping="Wrap" FontSize="40"></TextBox>

            <Button VerticalAlignment="Bottom" FontSize="40">One</Button>

            <Button VerticalAlignment="Bottom" HorizontalAlignment="Right" FontSize="40">Two</Button>

        </Grid>

「核心部分だけ書き出すとこれだけだな」

「うそー。これだけで、上の全部のレイアウトに対応したの?」

「そういうことになる」

「どこにも条件分けの指定が無いよ。スナップ時の指定はこうするとか、ポートレイト時の指定はこうするとか」

「そんな指定は無いよ」

「なぜ?」

「全部マージンに対する相対指定になっているから。高さや幅の情報はなくて、全部親のコーナーに対する相対指定になっている。最終的に親の親の連鎖は画面サイズに行くから、相対的に全部サイズが決まる」

「これってXAMLになって初めてできたテクニック?」

「違う。Windowsフォームでも、アンカーを上下左右に指定することで、上下左右のコーナーに連動して移動したりサイズが変化するフォームを作成できた。XAMLはその進化形だからだ」

「つまりどういうこと?」

「何もかも絶対座標で指定するのが愚の骨頂。金を無駄に使う早道だ」

「予算を増やせばいいんじゃない?」

「そう思うだろ? でもたいてい予算は増えない」

「じゃあどうすれば……」

「辻褄を合わせるには、機能を減らすしかない」

「泣けてくるような結論だね」

「泣かないためには絶対座標で配置するのはやめておこう」